The invention relates generally to a method for de-duplication, and more specifically, to a computer-implemented method, system, and computer-program product for a de-duplication of updates in virtual machines.
Today, the usage of virtual machines (VM) is quite common in order to better utilize existing hardware resources. On top of a hypervisor a plurality of VMs may be operated. In case an error occurs within one VM, the other virtual machines may not be affected negatively. VMs may be deployed completely automatically and may be managed by systems management software like real hardware systems. Especially in Cloud computing environments, it may be useful to quickly start and deploy a new virtual machine for a new user. In order to overcome complications in the process of configuring a new to-be-deployed VM, it is commonplace to just generate a new virtual machine and its environment from a base image. The base image may be a general-purpose VM only designed to be cloned such that the cloned VM may be started instantly on the host computer system and the hypervisor.
Additionally, a process of de-duplication may be used to reduce the total amount of disk space required on the host computer system if a large number of storage blocks of the base image and the cloned VM images are identical. Thus, the cloned or client VMs may only hold those data which are unique to the specific client VM and may —for data blocks of files that are identical with the ones of the virtual machine—only refer back to the image of the base image.
However, over time there may be updates and/or patches deployed to individual client virtual machines. Additionally, there may also be updates to the base image which may not have to be reflected in each client virtual machine because they may be inconsistent with updates performed to individual client virtual machines. Hence, the total required disk space for the base image and the individual client VMs may grow over-proportionally over time. Thus, it may be useful to consolidate the performed updates to the client virtual machines and/or the base image.